//package com.cskaoyan.rocketmq.order;
//
//import com.cskaoyan.order.dal.entitys.Order;
//import com.cskaoyan.order.dal.persistence.OrderMapper;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
//import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
//import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
//import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
//import org.apache.rocketmq.client.exception.MQClientException;
//import org.apache.rocketmq.common.message.MessageExt;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import javax.annotation.PostConstruct;
//import java.nio.charset.Charset;
//import java.util.List;
//
///**
// * 创建日期: 2023/01/12 16:43
// *
// * @author ciggar
// */
//@Component
//@Slf4j
//public class DelayOrderCancelConsumer {
//
//    @Autowired
//    OrderMapper orderMapper;
//
//    DefaultMQPushConsumer delayOrderConsumer;
//
//    @PostConstruct
//    public void init() throws MQClientException {
//
//        // 1. 创建消息消费者
//        delayOrderConsumer = new DefaultMQPushConsumer("delay_order_cancel_consumer");
//
//        // 2. 设置注册中心
//        delayOrderConsumer.setNamesrvAddr("localhost:9876");
//
//        // 3. 订阅主题
//        delayOrderConsumer.subscribe("delay_order_topic","*");
//
//        // 4. 设置消息监听器
//        delayOrderConsumer.setMessageListener(new MessageListenerConcurrently() {
//            @Override
//            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
//                try {
//
//                    // 获取消息对象
//                    MessageExt messageExt = list.get(0);
//
//                    // 获取orderId
//                    byte[] body = messageExt.getBody();
//                    String orderId = new String(body, Charset.forName("utf-8"));
//
//                    // 打印日志，表示接受到这个消息
//                    log.info("收到消息,  消息id:{}, 消息的内容：{}", messageExt.getMsgId(), orderId);
//
//                    // 通过orderId查询订单
//                    Order order = orderMapper.selectByPrimaryKey(orderId);
//
//                    // 获取订单状态
//                    Integer status = order.getStatus();
//
//                    // 判断
//                    // 假如订单状态为 已支付 或者是 已取消, 直接返回消费成功
//
//                    // 假如订单状态为 初始化
//                    // 1. 把订单状态设置为已取消
//                    // 2. 返回库存
//                    //    查找这个订单关联的所有的商品，然后查询订单中对应的商品数量
//                    //    stockCount + num    &&    lockCount - num
//                    // 做完之后，返回消费成功
//
//                    return null;
//                }catch (Exception ex) {
//                    ex.printStackTrace();
//
//                    // 返回消费失败
//                }
//
//                return null;
//            }
//        });
//
//        // 5. 启动
//        delayOrderConsumer.start();
//
//        log.info("delayOrderConsumer started ...");
//
//    }
//
//
//
//}
